import axiosInstance from './axiosInstance';

/**
 * 预算配置管理相关API
 */
export const budgetConfigApi = {
  /**
   * 获取预算配置列表
   * @param {Object} params - 查询参数
   * @param {number|null} params.departmentId - 部门ID（可选）
   * @param {number|null} params.costItemId - 成本项目ID（可选）
   * @param {number|null} params.year - 年份（可选）
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页大小
   * @returns {Promise} - 返回Promise对象
   */
  getBudgetConfigs: (params) => axiosInstance.get('/budget-configs', { params }),

  /**
   * 获取预算配置详情
   * @param {number} id - 预算配置ID
   * @returns {Promise} - 返回Promise对象
   */
  getBudgetConfigById: (id) => axiosInstance.get(`/budget-configs/${id}`),

  /**
   * 新增预算配置
   * @param {Object} data - 预算配置数据
   * @param {number} data.departmentId - 部门ID（Long类型）
   * @param {number} data.costItemId - 成本项目ID（Long类型）
   * @param {number} data.year - 年份（Integer类型）
   * @param {number} data.budgetAmount - 预算金额（Number类型）
   * @param {string} data.remark - 备注（可选）
   * @returns {Promise} - 返回Promise对象
   */
  createBudgetConfig: (data) => axiosInstance.post('/budget-configs', data),

  /**
   * 更新预算配置
   * @param {number} id - 预算配置ID
   * @param {Object} data - 预算配置数据
   * @param {number} data.departmentId - 部门ID（Long类型）
   * @param {number} data.costItemId - 成本项目ID（Long类型）
   * @param {number} data.year - 年份（Integer类型）
   * @param {number} data.budgetAmount - 预算金额（Number类型）
   * @param {string} data.remark - 备注（可选）
   * @returns {Promise} - 返回Promise对象
   */
  updateBudgetConfig: (id, data) => axiosInstance.put(`/budget-configs/${id}`, data),

  /**
   * 删除预算配置
   * @param {number} id - 预算配置ID
   * @returns {Promise} - 返回Promise对象
   */
  deleteBudgetConfig: (id) => axiosInstance.delete(`/budget-configs/${id}`),

  /**
   * 获取预算分析数据
   * @param {Object} params - 查询参数
   * @param {number} params.year - 年份（可选）
   * @returns {Promise} - 返回Promise对象
   */
  getBudgetAnalysis: (params) => axiosInstance.get('/budget-configs/analysis', { params }),

  /**
   * 获取部门列表（用于选择器）
   * @returns {Promise} - 返回Promise对象
   */
  getDepartments: () => axiosInstance.get('/departments'),

  /**
   * 获取成本项目列表（用于选择器）
   * @returns {Promise} - 返回Promise对象
   */
  getCostItems: () => axiosInstance.get('/cost-items')
};

export default budgetConfigApi;